using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioControl : MonoBehaviour
{

    private AudioSource audioSource;

    public GameObject audioGameObject;

    // 音频切片文件
    public AudioClip clip;

    // Start is called before the first frame update
    void Start()
    {

        audioSource = this.GetComponent<AudioSource>();

        #region 动态控制播放音效

        // 1. 直接在要播放音效的对象上挂载脚本, 控制播放


        // 2. 实例化挂载了音效源脚本的脚本的对象
        // 这种方法用的比较少, 因为每次播放音效都需要创建一个对象
        // Instantiate(audioGameObject);

        // 3. 用一个AudioSource来控制不同的音效
        // AudioSource _audioSource = this.gameObject.AddComponent<AudioSource>();
        // _audioSource.clip = clip;
        // _audioSource.Play();
        // 可以根据这个得出: 一个gameObject可以挂载多个AudioSource, 但是一定要自己去管理他们, 不然就无法区分他们了.


        #endregion
    }

    // Update is called once per frame
    void Update()
    {
        #region 代码控制音频播放控制
        if (Input.GetKeyDown(KeyCode.P))
        {
            // 播放音频
            audioSource.Play();
        }
        else if (Input.GetKeyDown(KeyCode.S))
        {
            // 停止音频
            audioSource.Stop();
        }
        else if (Input.GetKeyDown(KeyCode.Space))
        {
            // 暂停播放
            audioSource.Pause();
        }
        else if (Input.GetKeyDown(KeyCode.X))
        {
            // 停止暂停, 和暂停后Play一样
            // 处于暂停状态时恢复播放
            audioSource.UnPause();
        }
        else if (Input.GetKeyDown(KeyCode.C))
        {
            // 延时5秒后播放
            // 一般情况下都不会使用
            audioSource.PlayDelayed(5);
        }
        #endregion


        #region 检测音效是否播放完毕

        if (audioSource.isPlaying)
        {
            print("播放中!");
        }
        else
        {
            print("播放结束了!");
        }

        #endregion

        
    }
}
